#ifndef __OBJECT_H__
#define __OBJECT_H__

#include "../Utilities/utilities.h"
#include "ObjectModel.h"
#include "ObjectTexture.h"
#include "Constant.h"

class cObject
{
	//Attribute
private:
	//Define private attribute
	//...
protected:
	//Define private attribute
	cObjectModel *m_Model;
	cObjectTexture *m_Texture;

	Matrix m_maLocalW;

	GLfloat m_fScaleX, m_fScaleY, m_fScaleZ;
	GLfloat m_fRotX, m_fRotY, m_fRotZ;
	Vector3 m_vPosition;

	bool m_bIsChanged;
public:
	//Define private attribute
	//...
	//Method
private:
protected:
public:
	cObject();
	virtual void Init(GLenum startTextureModel, char **fileTexture, int texCount, char *fileModelSource);
	virtual GLuint *GetTextureID();
	virtual Vector3 GetPosition(){return m_vPosition;}
	virtual void Scale(GLfloat x, GLfloat y, GLfloat z);
	virtual void RotateX(GLfloat angle);
	virtual void RotateY(GLfloat angle);
	virtual void RotateZ(GLfloat angle);
	virtual void Translate(GLfloat x, GLfloat y, GLfloat z);
	virtual void MoveLeft(GLfloat delta);
	virtual void MoveRight(GLfloat delta);
	virtual void MoveBackword(GLfloat delta);
	virtual void MoveForword(GLfloat delta);
	virtual GLfloat UpdateHeightTerrian();
	virtual void Update(ESContext *esContext, GLfloat deltaTime);
	virtual void Draw(ESContext *esContext);
	virtual ~cObject();
};

#endif